/*----------------------------------------------------------------------------*\
|
|						Public Interface to Muse Technology
|
|							     www.Muse.com
| Author : SunJun 
| Email : sundoom@msn.com
\*----------------------------------------------------------------------------*/

//////////////////////////////////////////////////////////////////////////
// $Id: Target.h,v 1.2 2009/04/03 12:51:25 sunjun Exp $
//////////////////////////////////////////////////////////////////////////

#ifndef __Target__
#define __Target__

//////////////////////////////////////////////////////////////////////////

#if defined __cplusplus

//////////////////////////////////////////////////////////////////////////

#include <Operation.h>

//////////////////////////////////////////////////////////////////////////

NAMESPACE_BEGIN

//////////////////////////////////////////////////////////////////////////

	// this class provides an object-oriented target interface.
	class API Target : public Operation
	{
	public:
		// constructor
		Target();
		
		// destructor
		virtual ~Target();

		// set the render texture
		INLINE VOID setRenderTexture( const class RenderTexture * texture, U32 face = 0 );

		// set the depth surface
		INLINE VOID setDepthSurface( const class DepthSurface * surface );

	private:
		// implement the render operation
		INLINE VOID operator() (class Context*rc);

	private:		
		std::vector< std::pair<RenderTexturePtr,U32> >mRTs;
		DepthSurfacePtr mDSPtr;
	};

	typedef MPtr<Target>TargetPtr;

//////////////////////////////////////////////////////////////////////////

NAMESPACE_END

//////////////////////////////////////////////////////////////////////////

#endif // __cplusplus

//////////////////////////////////////////////////////////////////////////

#endif // __Clear__

//////////////////////////////////////////////////////////////////////////